setTimeout(()=> {
    console.log(1)
})

new Promise((resolve, reject) => {
    // new Promise会立即执行里面的代码
    console.log('new')
    resolve('new')
}).then(res => { // 把任务添加到微任务队列中
    console.log(res+'12');
})
console.log(1234);

Promise.resolve((()=> {
    console.log('test')
    return 1
})()).then(()=> { // Promise是微任务, 微任务先于浏览器渲染执行
    console.log(2);
})

// 2 2 1 1
// 打印了2后才会渲染页面
//

document.body.style.background = 'red';

const btn = document.getElementById('btn');

btn.addEventListener('click', function() {
    Promise.resolve().then(()=> {
        console.log('m1')
    })
    console.log('l1')
})

btn.addEventListener('click', function() {
    Promise.resolve().then(()=> {
        console.log('m2')
    })
    console.log('l2')
})

btn.click(); // l1 l2 m1 m2

// 在浏览器上点击按钮打印的结果是 l1 m2 l2 m2
// 什么时候进入检查点，清空微任务：当调用栈清空之后